package org.joget.commons.util;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import org.json.simple.JSONObject;
public class StringUtil {
public static String TYPE_REGEX = "regex";
public static String TYPE_JSON = "json";
public static String encodeUrlParam(String url) {
String urlResult = url;
try {
String[] urlPart = urlResult.split("\\?");
urlResult = urlPart[0];
if (urlPart.length > 1) {
String[] params = urlPart[1].split("&");
int i = 0;
for (String a : params) {
if (i == 0) {
urlResult += "?";
i++;
} else {
urlResult += "&";
}
String[] value = a.split("=");
urlResult += URLEncoder.encode(value[0], "UTF-8") + "=" + URLEncoder.encode(value[1], "UTF-8");
}
}
} catch (Exception e) {
LogUtil.error(StringUtil.class.getName(), e, "");
}
return urlResult;
}
public static String escapeRegex(String inStr) {
return inStr.replaceAll("([\\\\*+\\[\\](){}\\$.?\\^|])", "\\\\$1");
}
public static String escapeString(String inStr, String format, Map<String, String> replaceMap){
if(replaceMap != null){
Iterator it = replaceMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> pairs = (Map.Entry<String, String>) it.next();
inStr = inStr.replaceAll(pairs.getKey(), escapeRegex(pairs.getValue()));
}
}
if(format == null){
return inStr;
}
if(format.equals(TYPE_REGEX)){
return escapeRegex(inStr);
}
if(format.equals(TYPE_JSON)){
return escapeRegex(JSONObject.escape(inStr));
}
return inStr;
}
public class IgnoreCaseComparator implements Comparator<String> {
public int compare(String strA, String strB) {
return strA.compareToIgnoreCase(strB);
}
}
public static String md5(String content) {
try {
MessageDigest m = MessageDigest.getInstance("MD5");
byte[] data = content.getBytes();
m.update(data, 0, data.length);
BigInteger i = new BigInteger(1, m.digest());
return String.format("%1$032X", i);
} catch (Exception ex) {
LogUtil.error(StringUtil.class.getName(), ex, "");
}
return "";
}
}